package com.example.empleemanagesystem.service;

import com.example.empleemanagesystem.entity.SalaryManage;
import com.example.empleemanagesystem.vo.SalaryManageVO;
import org.springframework.lang.NonNull;

import java.util.List;
import java.util.Optional;

/**
 * 该接口定义了薪资管理服务的基本业务逻辑。
 * 包括获取所有薪资记录、通过用户名或编号获取薪资信息、创建薪资信息、根据ID获取薪资信息、删除薪资信息以及更新薪资信息等。
 */
public interface SalaryManageService {
    /**
     * 获取所有薪资记录
     *
     * @return SalaryManageVO列表
     */
    List<SalaryManageVO> findAll();

    /**
     * 通过用户名获取薪资信息
     *
     * @param name 用户名
     * @return 包含SalaryManage对象的Optional
     */
    Optional<SalaryManage> getByName(@NonNull String name);

    /**
     * 通过员工编号获取薪资信息
     *
     * @param number 员工编号
     * @return 包含SalaryManage对象的Optional
     */
    Optional<SalaryManage> getByNumber(@NonNull String number);

    /**
     * 创建用户薪资信息
     *
     * @param salaryManageVO 对象
     * @return 如果创建成功返回true，否则返回false
     */
    boolean create(@NonNull SalaryManageVO salaryManageVO);

    /**
     * 根据ID获取薪资信息
     *
     * @param id 薪资记录ID
     * @return SalaryManage对象
     */
    SalaryManage getById(@NonNull Long id);

    /**
     * 根据ID删除薪资信息
     *
     * @param id 薪资记录ID
     */
    void deleteById(Long id);

    /**
     * 更新薪资信息
     *
     * @param salaryManage 对象
     */
    void update(SalaryManage salaryManage);
}